Python Set
π Let's Get Set-ting in Python! πβ
Sets in Python are like that exclusive club where no duplicates are allowed, everyone is unindexed, and things are delightfully unordered. In this guide, weβre going to laugh, learn, and become set-it-and-forget-it pros!
1. π§ What is a Set?β
Imagine a magical bag that:
- Randomly stores unique, hashable items π§
- Doesnβt believe in order or indexing π«π¦
- Is defined using curly braces
{}
or theset()
constructor
Example? Absolutely!
# Curly curly, quite swirly
nameSet = {"alex", "brian", "charles"}
# The more verbose cousin
nameSet = set(("alex", "brian", "charles"))
π Under the hood, sets are powered by dictionaries (yeah, that nerdy kid with superpowers from next door).
β οΈ No mutables allowed β lists and dictionaries are bouncers-denied. But tuples and immutable sets? Come on in!
2. π Getting Values from a Setβ
2.1. π Loop-de-loop with for
β
No indexes, no slices, just pure looping love:
nameSet = {"alex", "brian", "charles"}
for name in nameSet:
print(name)
π¦ Output:
alex
brian
charles
2.2. π΅οΈ Check Membership with in
β
nameSet = {"alex", "brian", "charles"}
print("brian" in nameSet)
print("david" in nameSet)
π Output:
True
False
3. β Adding Items Like a Proβ
Need to add more people to your no-duplicate party?
add()
β adds one itemupdate()
β adds many
nameSet = {"alex", "brian", "charles"}
nameSet.add("david")
print(nameSet)
nameSet.update(["evan", "frank", "george"])
print(nameSet)
π Output:
{'alex', 'charles', 'brian', 'david'}
{'brian', 'alex', 'david', 'frank', 'george', 'charles', 'evan'}
4. β Removing Items Like a Ninjaβ
Choose your weapon wiselyβ
remove()
β throws tantrum if item doesnβt exist βdiscard()
β chill and quiet even if item is missing πpop()
β removes and returns a surprise gift πclear()
β wipes the slate clean π§½del
β blows it into oblivion π₯
nameSet = {"alex", "brian", "charles", "evan", "frank"}
nameSet.remove("frank")
print(nameSet)
nameSet.discard("evan")
print(nameSet)
name = nameSet.pop()
print(name)
print(nameSet)
nameSet.clear()
print(nameSet)
del nameSet
print(nameSet)
π£ Output:
{'evan', 'alex', 'charles', 'brian'}
{'alex', 'charles', 'brian'}
alex
{'charles', 'brian'}
set()
Traceback (most recent call last):
File "<string>", line 17, in <module>
NameError: name 'nameSet' is not defined
5. π«± Set Union β Combining Superpowersβ
Want to merge two sets into a mega-set?
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"evan", "frank"}
setUnion = nameSet1.union(nameSet2)
print(setUnion)
𧬠Output:
{'charles', 'frank', 'alex', 'evan', 'brian'}
6. π§° Python Set Toolbox β Methods You Gotta Knowβ
Letβs tour the Set theme park π’:
6.1. add()
β Add a Friendβ
nameSet = {"alex", "brian", "charles"}
nameSet.add("david")
print(nameSet)
π¦ Output: {'alex', 'brian', 'charles', 'david'}
6.2. clear()
β Clean Slateβ
nameSet = {"alex", "brian", "charles"}
nameSet.clear()
print(nameSet)
π§½ Output: set()
6.3. copy()
β Clone Warsβ
nameSet = {"alex", "brian", "charles"}
copySet = nameSet.copy()
print(copySet)
πͺ Output: {'alex', 'brian', 'charles'}
6.4. difference()
β Whatβs Missing?β
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
diffSet = nameSet1.difference(nameSet2)
print(diffSet)
β Output: {'charles'}
6.5. difference_update()
β Get Rid of the Overlapβ
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
nameSet1.difference_update(nameSet2)
print(nameSet1)
π§Ή Output: {'charles'}
6.6. discard()
β Politely Say Goodbyeβ
nameSet = {"alex", "brian", "charles"}
nameSet.discard("charles")
print(nameSet)
πͺ Output: {'alex', 'brian'}
6.7. intersection()
β What Do We Have in Common?β
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
diffSet = nameSet1.intersection(nameSet2)
print(diffSet)
π― Output: {'alex', 'brian'}
6.8. intersection_update()
β Keep Only Whatβs Sharedβ
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
nameSet1.intersection_update(nameSet2)
print(nameSet1)
π Output: {'alex', 'brian'}
6.9. isdisjoint()
β Are We Totally Different?β
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
result = nameSet1.isdisjoint(nameSet2)
print(result)
π
Output: False
6.10. issubset()
β Is This Set Part of the Cool Gang?β
nameSet1 = {"alex", "brian"}
nameSet2 = {"alex", "brian", "charles"}
result = nameSet1.issubset(nameSet2)
print(result)
π¨βπ¦ Output: True
6.11. issuperset()
β Am I the Boss Here?β
nameSet1 = {"alex", "brian"}
nameSet2 = {"alex", "brian", "charles"}
result = nameSet1.issuperset(nameSet2)
print(result)
π Output: False
6.12. pop()
β Surprise! Youβre Goneβ
nameSet = {"alex", "brian", "charles"}
print(nameSet.pop())
print(nameSet)
π Output:
alex
{'charles', 'brian'}
6.13. remove()
β Bye, Youβ
nameSet = {"alex", "brian", "charles"}
nameSet.remove("alex")
print(nameSet)
π Output: {'charles', 'brian'}
6.14. symmetric_difference()
β Whatβs Not in Both?β
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
result = nameSet1.symmetric_difference(nameSet2)
print(result)
π Output: {'david', 'charles'}
6.15. symmetric_difference_update()
β Forget the Common Stuffβ
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
nameSet1.symmetric_difference_update(nameSet2)
print(nameSet1)
π§ Output: {'david', 'charles'}
6.16. union()
β Combine Like Superheroesβ
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
result = nameSet1.union(nameSet2)
print(result)
π¦Έ Output: {'alex', 'brian', 'david', 'charles'}
6.17. update()
β Iβll Take It Allβ
nameSet1 = {"alex", "brian", "charles"}
nameSet2 = {"alex", "brian", "david"}
nameSet1.update(nameSet2)
print(nameSet1)
π Output: {'alex', 'brian', 'david', 'charles'}